#include<bits/stdc++.h>
#define int long long
#define N 200005
using namespace std;
int n,k;
int u[N],v[N],fa[N];
int h[405][405];
int f[405][405];
int fac[N],inv[N];
int s,vis[N];
vector<int> g[N];
const int mod=998244353;
void dfs(int x,int fa){
    s++;
    for(int i:g[x]) if(i!=fa&&vis[i]) dfs(i,x);
}
bool sol(int l,int r){
    for(int i=l;i<=r;i++) vis[i]=1;
    s=0;
    dfs(l,0);
    for(int i=l;i<=r;i++) vis[i]=0;
    return (s==r-l+1);
}
int Pow(int x,int y){
    x%=mod;
    int z=1;
    while(y){
        if(y&1) z=z*x%mod;
        x=x*x%mod;
        y>>=1;
    }
    return z;
}
void init(){
    fac[0]=inv[0]=1;
    for(int i=1;i<=n;i++) fac[i]=fac[i-1]*i%mod;
    inv[n]=Pow(fac[n],mod-2);
    for(int i=n-1;i>=1;i--) inv[i]=inv[i+1]*(i+1)%mod;
}
int C(int n,int m){
    if(n<0||m<0||n<m) return 0;
    return fac[n]*inv[m]%mod*inv[n-m]%mod;
}
signed main(){
    freopen("soft.in","r",stdin);
    freopen("soft.out","w",stdout);
    scanf("%lld %lld",&n,&k);
    for(int i=1,u,v;i<n;i++){
        scanf("%lld %lld",&u,&v);
        g[u].push_back(v);
        g[v].push_back(u);
    }
    if(n<=100){
        for(int i=1;i<=n;i++)
            for(int j=i;j<=n;j++) h[i][j]=sol(i,j);
        f[0][0]=1;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=i;j++){
                if(!h[j][i]) continue;
                for(int l=1;l<=k;l++){
                    (f[i][l]+=f[j-1][l-1])%=mod;
                }
            }
        }
        for(int i=1;i<=k;i++) printf("%lld\n",f[n][i]);
        return 0;
    }
    init();
    for(int i=1;i<=k;i++) printf("%lld\n",C(n-1,i-1));
    return 0;
}